package model

import (
	"nexus/utils"
	"time"

	"gorm.io/gorm"
)

const TableNameFile = "file"

type File struct {
	ID           string     `json:"id"`
	OriginalName string     `json:"original_name"`                                          // 原始文件名
	DisplayName  string     `json:"display_name"`                                           // 显示文件名
	FileType     string     `json:"file_type"`                                              // 文件类型
	Path         string     `json:"path"`                                                   // 文件路径
	Status       int        `json:"status"`                                                 // 文件状态
	CreatedAt    time.Time  `gorm:"column:created_at;not null" json:"created_at"`           // 创建时间
	UpdatedAt    time.Time  `gorm:"column:updated_at;not null" json:"updated_at"`           // 更新时间
	DeletedAt    *time.Time `gorm:"column:deleted_at;index;default:null" json:"deleted_at"` // 删除时间
}

func (f *File) TableName() string {
	return TableNameFile
}

// BeforeCreate GORM Hook - 在创建前生成ID
func (a *File) BeforeCreate(tx *gorm.DB) error {
	if a.ID == "" {
		a.ID = utils.GenerateStringID()
	}
	return nil
}
